package com.wmb.advice;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
/*
    该类用于形成切面
 */

//注入类
@Component
//@Aspect:作用是把当前类标识为一个切面供容器读取
@Aspect
public class CommonLogAdvice {
    // 定义不同类型的增强/通知的方法，也就是增强的业务逻辑处理的方法
    /*
    @Before /@After 配置不同类型的增强通知；
    execution(* com.yuw.service..*.*(..))：构成切面的切入点的范围（标明哪些数据为切入点）；
        解析：  * 返回值类型，为任意类型；
               com.yuw.service 构成切入点的包路径名
               ..* 表示这个包路径下的所有的子类
               * 括号前面这个* 表示 任意的方法名
               (..) 表示构成切入点的方法的参数列表；参数为任意个数；

     *** 增强”使用＂织入”方式结合在＂连接点”上构成了“切入点”，“切入点＂汇集成”切面”

     @Before后面的， public void doBeforLogging()方法，在目标方法(切入点)执行之前执行，只要执信@Before就会执行这个方法
     @After后面的， public void doBeforLogging()方法，在目标方法(切入点)执行之后执行，只要执信@After就会执行这个方法
     */
    @Before("execution(* com.wmb.service..*.*(..))")
    public void doBeforLogging() {
        // 增强的业务逻辑处理的方法
        System.out.println("这里进行了前置增强：记录切入点的日志。。。。");
    }

    @After("execution(void com.wmb.service..*.do*(..))")
    public void doAfterLogging() {
        // 增强的业务逻辑处理的方法
        System.out.println("这里进行了后置增强：记录切入点的日志222。。。。");
    }

}
